有了Varnish防盗链,自然也要有Squid的防盗链。原理都一样,对Referer进行判断,当然网上有所谓的终极解决方案还对cookies进行判断的,这里还是只讨论Referer这种。在Squid里就是在配置文件添加acl控制,在squid.conf中的acl段添加如下配置:
1 2 3 4 5 6 7 8 9
| acl has_referer referer_regex . acl allow_referer referer_regex -i baidu\.com acl allow_referer referer_regex -i google\.com acl allow_referer referer_regex -i yahoo\.cn acl allow_referer referer_regex -i google\.cn http_access allow !has_referer http_access deny !allow_referer deny_info http://img1.test.com/images/noposter.jpg allow_referer
|
解释一下,has_referer匹配Referer存在,然后利用!has_referer来匹配没有Referer即直接访问的请求,这部分请求不予做防盗链处理,allow。allow_referer即允许使用源站资源的网站,然后利用!allow_referer来匹配不在允许列表的网站,这些不允许的Referer过来的请求就返回deny_info的内容